package controller.gui.menubar;

import java.awt.Frame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JMenuItem;

import advance.GameMap;


import tool.dialog.InsertMapPropertiesDialog;

import controller.Controller;
import controller.MenuBarController;
import controller.NullStaticObjectException;
import controller.SaveHandlerUser;
import controller.StrataNumberUser;
import controller.StratumLevelUser;
import errors.DimensionNotAcceptableException;
import gui.MapEditorFrame;

/**rappresenta il controller che rileva gli eventi (ed esegue le conseguenze) derivanti dal pulsante "nuova mappa"
 * contenuto nel menu
 * 
 * @author koldar
 * @version 1.1
 */
public class NewMapController extends MenuBarController implements StratumLevelUser,StrataNumberUser,SaveHandlerUser{
	
	public NewMapController(MapEditorFrame _frame,JMenuItem towire){
		super(_frame,towire);
	}
	
	/**elimina la mappa che si sta correttentemente creando e la rimpiazza con una completamente
	 * vuota. Tutti i dati relativi all'ultimo MapLayer/MapObject non verranno tuttavia cancellati 
	 */
	@Override
	public void wizardInizializer(ActionEvent arg0)throws NullStaticObjectException {

		InsertMapPropertiesDialog dialog=null;
		
		dialog=new InsertMapPropertiesDialog(this.frame,"Fill in the parameters for the new map:");
		if (dialog.isMapDataCollected()){
			//i dati sono stati collezionati
			try {
				Controller.setCurrentmap(new GameMap(
						dialog.getMapTitle(),
						dialog.getMapResolution(),
						dialog.getMapWidth(),
						dialog.getMapHeight()));
			} catch (DimensionNotAcceptableException e1) {
				//dati non accettabili! il software non fa nulla!
			}
			this.stratum.setValue(this.NOCURRENTSTRATUM);
			this.totalStrata.setValue(0);
			//impostazione del salvataggio con Save as
			this.toBeSavedWithSaveAs.setValue(true);
			this.getLog().setText("  New map created!");
		}
		this.setToIdle();
	}
	
	

}
